package com.ruoyi.campus.mapper;

import java.util.List;
import com.ruoyi.campus.domain.MyCommodityType;
import org.apache.ibatis.annotations.Param;

/**
 * 类别Mapper接口
 *
 * @author zht
 * @date 2021-12-09
 */
public interface MyCommodityTypeMapper
{
    /**
     * 查询类别
     *
     * @param typeId 类别主键
     * @return 类别
     */
    public MyCommodityType selectMyCommodityTypeByTypeId(Long typeId);

    /**
     * 查询类别列表
     *
     * @param myCommodityType 类别
     * @return 类别集合
     */
    public List<MyCommodityType> selectMyCommodityTypeList(MyCommodityType myCommodityType);

    /**
     * 新增类别
     *
     * @param myCommodityType 类别
     * @return 结果
     */
    public int insertMyCommodityType(MyCommodityType myCommodityType);

    /**
     * 修改类别
     *
     * @param myCommodityType 类别
     * @return 结果
     */
    public int updateMyCommodityType(MyCommodityType myCommodityType);

    /**
     * 删除类别
     *
     * @param typeId 类别主键
     * @return 结果
     */
    public int deleteMyCommodityTypeByTypeId(Long typeId);

    /**
     * 批量删除类别
     *
     * @param typeIds 需要删除的数据主键集合
     * @return 结果
     */
    public int deleteMyCommodityTypeByTypeIds(Long[] typeIds);

    /**
     * 校验类别名称是否唯一
     * @param typeName 类别名称
     * @param parentId  父类别id
     * @return 结果
     */
    public MyCommodityType checkTypeNameUnique(@Param("typeName") String typeName,@Param("parentId") Long parentId);

    /**
     * 是否存在类别子节点
     * @param typeId 类别Id
     * @return 结果
     */
    public int hasChildByTypeId(Long typeId);

    /**
     * 查询是否存在商品引用
     * @param typeId 类别Id
     * @return 结果
     */
    public int hasCommByTypeId(Long typeId);

    /**
     * 根据ID查询所有子类别
     *
     * @param typeId 类别ID
     * @return 类别列表
     */
    public List<MyCommodityType> selectChildrenTypeById(Long typeId);

    /**
     * 修改子元素关系
     *
     * @param types 子元素
     * @return 结果
     */
    public int updateTypeChildren(@Param("types") List<MyCommodityType> types);
}
